<html>
    <head>
        <title>配置集成服务</title>
    </head>
    <body>
        <script>
            /*
                        三、配置集成服务


                                 1、 公开集成服务   Exposing Integration Services

                                            出于安全原因，集成服务和控制器默认不公开。
                                            
                                            它们通常不需要授权(因为是微服务之间的请求、甚至说是在进程内的调用)，因此您应该仔细而明确地允许它们对客户端应用程序可见和可用。


                                            要公开集成服务和控制器，请将 "AbpAspNetCoreMvcOptions.ExposeIntegrationServices" 设置为true,
                                            
                                            在模块类的方法中：

                                                        Configure<AbpAspNetCoreMvcOptions>(options =>
                                                        {
                                                            options.ExposeIntegrationServices = true; // 是允许集成服务公开？
                                                        });

                                            备注：  
                                                当您正在构建可重用的应用程序模块时，隐藏集成服务很有用， 它们可能在单体应用程序或微服务系统中使用。

                                                在单体应用程序中，集成服务不需要暴露在外部，因为模块可以在进程内相互通信。

                                                另一方面，如果您构建微服务解决方案并将该模块用作服务，则公开集成服务将是适当的，
                                                
                                                因此其他微服务可以在您的专用网络（或库伯内特斯集群）内远程使用它们。

                                                在这种情况下，请注意不要意外地将集成服务暴露在您的专用网络之外。

                                                配置您的API网关，以便它阻止来自网络外部的integration-api前缀URL的请求将是一个不错的选择。


                                 2、启用/禁用审计日志记录

                                               默认情况下，集成服务禁用审核日志记录，
                                               
                                               但可以通过在模块类的ConfigureServices方法中配置AbpAuditingOptions选项类来启用它： 
                                               
                                                            Configure<AbpAuditingOptions>(options =>
                                                            {
                                                                options.IsEnabledForIntegrationService = true;
                                                            });

                                                        
                                 3、过滤自动API控制器

                                              您可以在创建Auto API Controller时过滤集成服务（或非集成服务），
                                              
                                              通过配置AbpAspNetCoreMvcOptions，使用 ConventionalControllerSetting的ApplicationServiceTypes选项，如下所示：

                                                            PreConfigure<AbpAspNetCoreMvcOptions>(options =>
                                                            {
                                                                options.ConventionalControllers.Create(
                                                                    typeof(MyApplicationModule).Assembly,
                                                                    conventionalControllerSetting =>
                                                                    {
                                                                        conventionalControllerSetting.ApplicationServiceTypes = 
                                                                            ApplicationServiceTypes.IntegrationServices;  // 只创建集成服务控制器

                                                                    });
                                                            });

                                            提示：您可以调用options.ConventionalControllers.Create以使用不同的选项配置常规应用程序服务和集成服务。
                                                            
                    */
        </script>
    </body>
</html>